const base64url = require('base64url');

const header = {"alg": "HS256", "typ": "JWT"};
const payload = {
    username: '小美',
    id: 1
// token：解析token的标识
}

var codeHeaderStr = JSON.stringify(header);
var codepayloadStr = JSON.stringify(payload);
var codeheader = new Buffer(codeHeaderStr).toString('base64');
var codepayload = new Buffer(codepayloadStr).toString('base64');
//code:QmFzZTY05piv5LiA56iu5Z+65pa8NjTlgIvlj6/liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U=
console.log("codeheader:" + codeheader.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"));
console.log("codepayload:" + codepayload.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"));

var decode = new Buffer(codepayload, 'base64').toString();
//decode:Base64是一種基於64個可列印字元來表示二進位資料的表示方法
console.log("decode:" + decode);


// ================================decode================================



var code = new Buffer("Base64是一種基於64個可列印字元來表示二進位資料的表示方法").toString('base64');

//code:QmFzZTY05piv5LiA56iu5Z+65pa8NjTlgIvlj6/liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U=
console.log("code:" + code);

//code:QmFzZTY05piv5LiA56iu5Z-65pa8NjTlgIvlj6_liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U
console.log("code:" + code.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"));

var decode = new Buffer(code, 'base64').toString();
//decode:Base64是一種基於64個可列印字元來表示二進位資料的表示方法
console.log("decode:" + decode);

//使用base64url轉換為url safe的Base64編碼
var safeUrl = base64url.fromBase64(code);
//safeUrl:QmFzZTY05piv5LiA56iu5Z-65pa8NjTlgIvlj6_liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U
console.log("safeUrl:" + safeUrl);

//decode2:Base64是一種基於64個可列印字元來表示二進位資料的表示方法
var decode2 = new Buffer(safeUrl, 'base64').toString();
console.log("decode2:" + decode2);

/**
 output：
 code:QmFzZTY05piv5LiA56iu5Z+65pa8NjTlgIvlj6/liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U=
 code:QmFzZTY05piv5LiA56iu5Z-65pa8NjTlgIvlj6_liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U
 decode:Base64是一種基於64個可列印字元來表示二進位資料的表示方法
 safeUrl:QmFzZTY05piv5LiA56iu5Z-65pa8NjTlgIvlj6_liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U
 decode2:Base64是一種基於64個可列印字元來表示二進位資料的表示方法
 */


